<?php

class FuncionariosController extends AppController {
	var $name = 'Funcionarios';
	var $components = array ('Pagination','Acl');
	var $helpers = array('Html','Form','Accessibility','Pagination');

	function index() {
		$this->set('title', 'Funcionarios');
		$this->set('permissao', $this->Session->read("permissao"));
		$condition = "entidade_id = ".$this->getEntidade();
		$funcionarios = $this->Funcionario->findAll($condition);
		$this->set('funcionarios', $funcionarios);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/funcionarios');
		$this->set('title','Visualizar funcionario');
		$this->Funcionario->id = $id;
		$this->set('funcionario', $this->Funcionario->read());
	}

	function add() {

		if(!$this->isAdminEntidade())
		{
			$_SESSION['mensagem']['error'][] = 'Acesso Negado!';
			$this->redirect('/funcionarios');
		}

		$this->set('title','Cadastrar funcionario');

		// Gerando lista de cidades
		$this->set('cidades', $this->Funcionario->Cidade->generateList(null, null, null, '{n}.Cidade.id', '{n}.Cidade.nome'));

		// Gerando lista de Permissões
		$p = new Permissao();
		$perm = $this->Session->read("permissao");
		$condition = array('id' => $perm);
		$permissoes = $p->generateList($condition, null, null, '{n}.Permissao.id', '{n}.Permissao.nome');
		$this->set('permissoes',$permissoes);


		// Gerando lista de Unidades da Entidade
		$condition = array('entidade_id'=>$this->getEntidade());
		$this->set('unidades', $this->Funcionario->Unidade->generateList($condition, null, null, '{n}.Unidade.id', '{n}.Unidade.nome'));


		if (!empty($this->data))
		{
			$aco = new Aco();
			$aco->create($this->Funcionario->id, null, $this->data['Funcionario']['nome']);
			if ($this->Funcionario->save($this->data))
			{
				//pr($this->data);

				$this->data['Usuario']['unidade_id'] = $this->data['Funcionario']['unidade_id'];
				$usuario = new Usuario();
				$usuario->save($this->data);

				$funcionario = $this->Funcionario->find("Funcionario.id = ".$this->Funcionario->getLastInsertId());

				$funcionario['Funcionario']['usuario_id'] = $usuario->getLastInsertId();
				$this->Funcionario->save($funcionario);


				$_SESSION['mensagem']['success'][] = 'Funcionario cadastrado com sucesso!';
			}
			else
			{

				$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar o funcionario.';
			}
			$this->redirect('/funcionarios');
		}
	}

	function edit( $id=null) {

		if(!$this->isAdminEntidade())
		{
			$_SESSION['mensagem']['error'][] = 'Acesso Negado!';
			$this->redirect('/funcionarios');
		}


		if (!$id) $this->redirect('/funcionarios');
		$this->set('title','Editar funcionario');

		$this->set('cidades', $this->Funcionario->Cidade->generateList(null, null, null, '{n}.Cidade.id', '{n}.Cidade.nome'));

		$p = new Permissao();
		$permissoes = $p->generateList(null, null, null, '{n}.Permissao.id', '{n}.Permissao.nome');
		$this->set('permissoes',$permissoes);

		$condition = array('entidade_id'=>$this->getEntidade());
		$this->set('unidades', $this->Funcionario->Unidade->generateList($condition, null, null, '{n}.Unidade.id', '{n}.Unidade.nome'));

		$this->Funcionario->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Funcionario->read();
		} else {
			if ($this->Funcionario->save($this->data['Funcionario'])) {

				//Encontrando usuario
				$u = new Usuario();
				$usuario = $u->findByLogin($this->data['Usuario']['login']);

				$this->data['Usuario']['unidade_id'] = $this->data['Funcionario']['unidade_id'];
				$this->data['Usuario']['id'] = $usuario['Usuario']['id'];
				$u->save($this->data);

				$funcionario = $this->Funcionario->find("Funcionario.id = ".$this->data['Funcionario']['id']);
				$funcionario['Funcionario']['usuario_id'] = $usuario['Usuario']['id'];
				$this->Funcionario->save($funcionario);


				$_SESSION['mensagem']['success'][] = 'Funcionario alterado com sucesso!';
			} else {
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar o funcionario.';
			}
			$this->redirect('/funcionarios');
		}
		$funcionario = $this->Funcionario->find(array('`Funcionario`.id' => $id));
		$this->set('funcionario', $funcionario);
	}

	function delete($id) {

		if(!$this->isAdminEntidade())
		{
			$_SESSION['mensagem']['error'][] = 'Acesso Negado!';
			$this->redirect('/funcionarios');
		}
		else
		{
		// Verificando se o ID foi fornecido
		if (!$id)
		{
			$this->redirect('/funcionarios');
		}

		// Encontrando o usuario referente ao funcionario sendo excluido
		$func = $this->Funcionario->findById($id);
		$id_user = $func["Funcionario"]["usuario_id"];

		// Removendo funcionario do sistema
		if ($this->Funcionario->del($id))
		{
			// Criando objeto de usuario
			$usuario = new Usuario();

			// Removendo usuario do sistema
			if($usuario->del($id_user))
			{
				$_SESSION['mensagem']['success'][] = 'Funcionario excluido com sucesso!';
			}
			else
			{
				$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir o usuario do sistema.';
			}
		}
		else
		{
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir o funcionario.';
		}

		// Redirencionando para o indice
		$this->redirect('/funcionarios');
		}
	}
}
?>
